{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# HW2: Logistic 回归&SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "# 数据分割\n",
    "from sklearn.model_selection import train_test_split\n",
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "# 在这个作业中用正确率作为模型预测性能的度量（SVM并不能直接输出各类的概率）\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据读取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取数据\n",
    "train = pd.read_csv(\"diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 768 non-null int64\n",
      "Glucose                     768 non-null int64\n",
      "BloodPressure               768 non-null int64\n",
      "SkinThickness               768 non-null int64\n",
      "Insulin                     768 non-null int64\n",
      "BMI                         768 non-null float64\n",
      "DiabetesPedigreeFunction    768 non-null float64\n",
      "Age                         768 non-null int64\n",
      "Outcome                     768 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pregnancies                 0\n",
       "Glucose                     0\n",
       "BloodPressure               0\n",
       "SkinThickness               0\n",
       "Insulin                     0\n",
       "BMI                         0\n",
       "DiabetesPedigreeFunction    0\n",
       "Age                         0\n",
       "Outcome                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### 查看是否有空值\n",
    "train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.845052</td>\n",
       "      <td>120.894531</td>\n",
       "      <td>69.105469</td>\n",
       "      <td>20.536458</td>\n",
       "      <td>79.799479</td>\n",
       "      <td>31.992578</td>\n",
       "      <td>0.471876</td>\n",
       "      <td>33.240885</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.369578</td>\n",
       "      <td>31.972618</td>\n",
       "      <td>19.355807</td>\n",
       "      <td>15.952218</td>\n",
       "      <td>115.244002</td>\n",
       "      <td>7.884160</td>\n",
       "      <td>0.331329</td>\n",
       "      <td>11.760232</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27.300000</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>117.000000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>30.500000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.372500</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>140.250000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>127.250000</td>\n",
       "      <td>36.600000</td>\n",
       "      <td>0.626250</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>199.000000</td>\n",
       "      <td>122.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>846.000000</td>\n",
       "      <td>67.100000</td>\n",
       "      <td>2.420000</td>\n",
       "      <td>81.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Pregnancies     Glucose  BloodPressure  SkinThickness     Insulin  \\\n",
       "count   768.000000  768.000000     768.000000     768.000000  768.000000   \n",
       "mean      3.845052  120.894531      69.105469      20.536458   79.799479   \n",
       "std       3.369578   31.972618      19.355807      15.952218  115.244002   \n",
       "min       0.000000    0.000000       0.000000       0.000000    0.000000   \n",
       "25%       1.000000   99.000000      62.000000       0.000000    0.000000   \n",
       "50%       3.000000  117.000000      72.000000      23.000000   30.500000   \n",
       "75%       6.000000  140.250000      80.000000      32.000000  127.250000   \n",
       "max      17.000000  199.000000     122.000000      99.000000  846.000000   \n",
       "\n",
       "              BMI  DiabetesPedigreeFunction         Age     Outcome  \n",
       "count  768.000000                768.000000  768.000000  768.000000  \n",
       "mean    31.992578                  0.471876   33.240885    0.348958  \n",
       "std      7.884160                  0.331329   11.760232    0.476951  \n",
       "min      0.000000                  0.078000   21.000000    0.000000  \n",
       "25%     27.300000                  0.243750   24.000000    0.000000  \n",
       "50%     32.000000                  0.372500   29.000000    0.000000  \n",
       "75%     36.600000                  0.626250   41.000000    1.000000  \n",
       "max     67.100000                  2.420000   81.000000    1.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 各属性的统计特性\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Outcome 分布，看看各类样本分布是否均衡\n",
    "sns.countplot(train.Outcome);\n",
    "pyplot.xlabel('Outcome');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "1、数据无缺失值；   \n",
    "2、各类样本不均衡，使用交叉验证对分类任务缺省的StratifiedKFold（分层交叉验证），在每折采样时根据各类样本按比例采样。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 输入属性的直方图／分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 怀孕次数 Pregnancies\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.Pregnancies.values, bins=30, kde=False)\n",
    "pyplot.xlabel('Pregnancies', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 口服葡萄糖耐受试验中，2 小时的血浆葡萄糖浓度  Glucose\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.Glucose.values, bins=30, kde=False)\n",
    "pyplot.xlabel('Glucose', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "口服葡萄糖耐受试验中，2 小时的血浆葡萄糖浓度部分数据为0，属于异常值，且数量较少，予以剔除。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(763, 9)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#剔除异常点\n",
    "train = train[train.Glucose > 0]\n",
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAENCAYAAAABh67pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAE0VJREFUeJzt3X+w5XV93/HnK6yYgLHLj4UgP1xsNlHjJNHZCGomdSBpRdFlpprgUrO1TDbpmIZEOoJxUppp0+iY8VcbbSiga+qihhAhaNLQFTWdxq0LMgqudCnCsrLCNfwStQr67h/fz9bj9e7u3XPu5dzz4fmYuXPO98f5ft/f8733dT/nc873c1JVSJL69UPTLkCStLwMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnVk27AIBjjz221q5dO+0yJGmm3HjjjV+tqjUHW29FBP3atWvZsWPHtMuQpJmS5K7FrGfXjSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTto0Ce5Isl9SW4ZmXd0kuuT7Gq3R7X5SfKuJLcn+VyS5y1n8ZKkg1tMi/59wEvmzbsY2FZV64BtbRrgLGBd+9kMvGdpypQkjeugV8ZW1aeSrJ03ewPw4nZ/C/AJ4KI2//01fOP4p5OsTnJCVe1dqoKlWbd1++5FrbfxtFOWuRI9UYzbR3/8vvBut8e1+ScCd4+st6fNkyRNyVK/GZsF5tWCKyabk+xIsmNubm6Jy5Ak7TNu0N+b5ASAdntfm78HOHlkvZOAexbaQFVdWlXrq2r9mjUHHXxNkjSmcYP+WmBTu78JuGZk/q+2T9+cDjxk/7wkTddB34xNciXDG6/HJtkDXAK8GfhwkvOB3cCr2uofA14K3A58A3jtMtQsSToEi/nUzav3s+jMBdYt4HWTFiXJT+do6XhlrCR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM6tmnYB0kq2dfvuRa+78bRTlrESaXy26CWpc7bopRm32FcdvuJ44rJFL0mdM+glqXMGvSR1bqKgT/I7SW5NckuSK5P8cJJTk2xPsivJh5IcvlTFSpIO3dhBn+RE4LeA9VX1HOAw4FzgLcDbq2od8ABw/lIUKkkaz6RdN6uAH0myCjgC2AucAVzVlm8BzplwH5KkCYwd9FX1ZeCPgN0MAf8QcCPwYFU91lbbA5w4aZGSpPFN0nVzFLABOBV4GnAkcNYCq9Z+Hr85yY4kO+bm5sYtQ5J0EJN03fwi8KWqmquqR4GrgRcCq1tXDsBJwD0LPbiqLq2q9VW1fs2aNROUIUk6kEmCfjdwepIjkgQ4E/gCcAPwyrbOJuCayUqUJE1ikj767Qxvut4EfL5t61LgIuD1SW4HjgEuX4I6JUljmmism6q6BLhk3uw7gOdPsl1J0tLxylhJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SercRFfGSvqerdt3T7sEaUG26CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucmCvokq5NcleSLSXYmeUGSo5Ncn2RXuz1qqYqVJB26SVv07wT+uqqeCfwMsBO4GNhWVeuAbW1akjQlYwd9kqcCvwBcDlBV366qB4ENwJa22hbgnEmLlCSNb5IW/TOAOeC9ST6b5LIkRwLHV9VegHZ73BLUKUka0yRBvwp4HvCeqnou8HUOoZsmyeYkO5LsmJubm6AMSdKBTBL0e4A9VbW9TV/FEPz3JjkBoN3et9CDq+rSqlpfVevXrFkzQRmSpANZNe4Dq+orSe5O8pNVdRtwJvCF9rMJeHO7vWZJKpU0ka3bdy9qvY2nnbLMlejxNnbQN/8K+ECSw4E7gNcyvEr4cJLzgd3AqybchyRpAhMFfVXdDKxfYNGZk2xXWm6Lbd1KPfDKWEnqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6t2raBUhaWbZu372o9TaedsoyV6KlYotekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1LmJgz7JYUk+m+S6Nn1qku1JdiX5UJLDJy9TkjSupWjRXwDsHJl+C/D2qloHPACcvwT7kCSNaaKgT3IS8DLgsjYd4AzgqrbKFuCcSfYhSZrMpC36dwBvAL7bpo8BHqyqx9r0HuDECfchSZrA2EGf5Gzgvqq6cXT2AqvWfh6/OcmOJDvm5ubGLUOSdBCTtOhfBLwiyZ3ABxm6bN4BrE6yb1TMk4B7FnpwVV1aVeurav2aNWsmKEOSdCBjB31VvbGqTqqqtcC5wMer6jzgBuCVbbVNwDUTVylJGttyfI7+IuD1SW5n6LO/fBn2IUlapCX54pGq+gTwiXb/DuD5S7FdSdLkvDJWkjpn0EtS5wx6SeqcQS9JnTPoJalzS/Kpm2naun33otbbeNopy1yJJK1MtuglqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzM39lrKTpWOxV6eCV6dNmi16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5xwCQV05lMvypScKW/SS1Dlb9JoJttSl8dmil6TOGfSS1DmDXpI6N3bQJzk5yQ1Jdia5NckFbf7RSa5PsqvdHrV05UqSDtUkLfrHgAur6lnA6cDrkjwbuBjYVlXrgG1tWpI0JWMHfVXtraqb2v2vATuBE4ENwJa22hbgnEmLlCSNb0n66JOsBZ4LbAeOr6q9MPwzAI5bin1IksYzcdAneQrw58BvV9XDh/C4zUl2JNkxNzc3aRmSpP2YKOiTPIkh5D9QVVe32fcmOaEtPwG4b6HHVtWlVbW+qtavWbNmkjIkSQcwyaduAlwO7Kyqt40suhbY1O5vAq4ZvzxJ0qQmGQLhRcBrgM8nubnN+13gzcCHk5wP7AZeNVmJkqRJjB30VfU/gOxn8ZnjbleStLS8MlaSOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzkwxTLEmLsnX77kWtt/G0U5a5kicmW/SS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5r4zVVC32ikk9MXgF7fKwRS9JnTPoJalzdt1I6pZdQQNb9JLUOVv0Wha+ySqtHLboJalztuglzZylfsXYe1++LXpJ6tyytOiTvAR4J3AYcFlVvXk59qMDW45Win3v0uxZ8hZ9ksOAPwbOAp4NvDrJs5d6P5KkxVmOFv3zgdur6g6AJB8ENgBfWIZ9daX3fkJp1i3HK9rH4+95OfroTwTuHpne0+ZJkqZgOVr0WWBe/cBKyWZgc5t8JMltY+7vWOCrB1vpvDE3/jha1HHA0h/LEm9v0cexwnkcK0u3xzHh39/TF7PScgT9HuDkkemTgHvmr1RVlwKXTrqzJDuqav2k25k2j2Nl8ThWFo9jMsvRdfMZYF2SU5McDpwLXLsM+5EkLcKSt+ir6rEkvwn8N4aPV15RVbcu9X4kSYuzLJ+jr6qPAR9bjm0vYOLunxXC41hZPI6VxeOYQKp+4H1SSVJHHAJBkjo300Gf5CVJbktye5KLp13PYiU5OckNSXYmuTXJBW3+0UmuT7Kr3R417VoPJslhST6b5Lo2fWqS7e0YPtTekF/RkqxOclWSL7Zz8oIZPRe/036fbklyZZIfnoXzkeSKJPcluWVk3oLPfwbvan/zn0vyvOlV/v32cxxvbb9Xn0vyF0lWjyx7YzuO25L8k+WsbWaDfsaHWngMuLCqngWcDryu1X4xsK2q1gHb2vRKdwGwc2T6LcDb2zE8AJw/laoOzTuBv66qZwI/w3A8M3UukpwI/Bawvqqew/BBiHOZjfPxPuAl8+bt7/k/C1jXfjYD73mcalyM9/GDx3E98Jyq+mngfwNvBGh/7+cCP9Ue8+6WactiZoOekaEWqurbwL6hFla8qtpbVTe1+19jCJYTGerf0lbbApwznQoXJ8lJwMuAy9p0gDOAq9oqs3AMTwV+AbgcoKq+XVUPMmPnolkF/EiSVcARwF5m4HxU1aeA++fN3t/zvwF4fw0+DaxOcsLjU+mBLXQcVfU3VfVYm/w0w3VFMBzHB6vqW1X1JeB2hkxbFrMc9F0MtZBkLfBcYDtwfFXtheGfAXDc9CpblHcAbwC+26aPAR4c+cWehXPyDGAOeG/rgrosyZHM2Lmoqi8DfwTsZgj4h4Abmb3zsc/+nv9Z/rv/F8BftfuP63HMctAvaqiFlSzJU4A/B367qh6edj2HIsnZwH1VdePo7AVWXennZBXwPOA9VfVc4Ous8G6ahbQ+7A3AqcDTgCMZujnmW+nn42Bm8XeMJG9i6LL9wL5ZC6y2bMcxy0G/qKEWVqokT2II+Q9U1dVt9r37Xoa22/umVd8ivAh4RZI7GbrNzmBo4a9uXQcwG+dkD7Cnqra36asYgn+WzgXALwJfqqq5qnoUuBp4IbN3PvbZ3/M/c3/3STYBZwPn1fc+z/64HscsB/3MDrXQ+rIvB3ZW1dtGFl0LbGr3NwHXPN61LVZVvbGqTqqqtQzP/cer6jzgBuCVbbUVfQwAVfUV4O4kP9lmnckwpPbMnItmN3B6kiPa79e+45ip8zFif8//tcCvtk/fnA48tK+LZyXK8CVMFwGvqKpvjCy6Fjg3yZOTnMrw5vL/WrZCqmpmf4CXMryT/X+AN027nkOo++cZXqZ9Dri5/byUoY97G7Cr3R497VoXeTwvBq5r95/RfmFvB/4MePK061tE/T8L7Gjn4yPAUbN4LoDfB74I3AL8KfDkWTgfwJUM7ys8ytDSPX9/zz9Dl8cft7/5zzN8ymjqx3CA47idoS9+39/5fx5Z/03tOG4DzlrO2rwyVpI6N8tdN5KkRTDoJalzBr0kdc6gl6TOGfSS1DmDXitSkvcl+ffLsN1/m+S/LvV2pZXMoNfUJLkzyTeTPJLkgSQfTXLywR+5ZPtfm6Ta/h9p9czc8AfSwRj0mraXV9VTgBOAe4H/OIUaVrcaXg38m3Y14/cZGUZgalZCDZpNBr1WhKr6vwzjzCz4nQJJfq19ScP9Sa5N8rSRZS9M8pkkD7XbF44sOzXJJ5N8Lcn1wLEHqOHvgFuB57THVpLXJdnFcIUmSZ7Zvgjj/vaFEb88sq+XJvlC29eXk/zrNv/YJNclebA97m+T/NDIPn58ZBv/v8sqyYuT7ElyUZKvAO9t889OcnPb3v9M8tOH+HTrCcag14qQ5AjgVxjG7J6/7AzgD4FfZmj538UwkBpJjgY+CryL4bL5twEfTXJMe/hWhuF6jwX+Hd8bP2X+PpLkRQxfBPHZkUXnAKcBz27DF1/ftnkcwyuAdyf5qbbu5cCvV9WPMvyz+HibfyHDJfFrgOOB32XxIxX+GHA08HRgc4ZvVLoC+PV2vH8CXJvkyYvcnp6ADHpN20eSPAg8DPwS8NYF1jkPuKKqbqqqbzF8S88L2lj+LwN2VdWfVtVjVXUlw3gvL09yCvBzwO/V8AUPnwL+coHtf5XhCyMuAy6uqm0jy/6wqu6vqm8yjEB4Z1W9t+3rJoYRSPcNGvYowz+Ep1bVA235vvknAE+vqker6m9r8WOPfBe4pNX/TeDXgD+pqu1V9Z2q2gJ8i+GbyqQFGfSatnOqajXDAFy/CXwyyY/NW+dpDK14AKrqEeDvGb6o4fuWNXeNLHugqr4+b9l8x1bVUVX1rKp617xlo18O8XTgtNZl8mD7B3UeQ6sb4J8yDE53V+suekGb/1aGwa3+Jskdh/iG71zr1hqt4cJ5NZzcjlVakEGvFaG1Tq8GvsMwuueoexgCDoDWhXIM8OX5y5pT2rK9wFFt/dFlh1TayP27gU9W1eqRn6dU1b9sx/CZqtrA0K3zEeDDbf7XqurCqnoG8HLg9UnObNv8BsPX/u0z/5/c/Jb/3cAfzKvhiPZKRlqQQa8VofWRb2AYInjnvMVbgdcm+dnWF/0fgO1VdSfwMeAnkmxMsirJrzC8oXtdVd3FMPzw7yc5PMnPMwTtuK5r+3pNkie1n59L8qy2/fOS/IMavvjjYYZ/WvvePP3xJBmZ/522zZuBjUkOa5/2+UcHqeG/AL+R5LT2nB2Z5GVJfnSC41LnDHpN218meYQhAP8A2FRVt46u0PrMf4+hP3wv8A8ZvuyEqvp7hr7zCxm6c94AnF1VX20P38jwZur9wCXA+8cttIYvcv/Hbd/3AF8B3sLQ7QTwGuDOJA8DvwH8szZ/HfDfgUeAvwPeXVWfaMsuYPjns68b6CMHqWEHQz/9fwIeYOgS+ufjHpOeGByPXpI6Z4tekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI69/8AqCfyt+75TlAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 舒张压（mmHg） BloodPressure\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.BloodPressure.values, bins=30, kde=False)\n",
    "pyplot.xlabel('BloodPressure', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看当舒张压为0时，输出直方图分布\n",
    "tempBloodPressure0 = train[train.BloodPressure == 0]\n",
    "sns.countplot(tempBloodPressure0.Outcome);\n",
    "pyplot.xlabel('Outcome');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "正常人的舒张压在60~90mmHg之间，小于60mmHg过低，大于90过高，舒张压为0显然不正常，为异常值，但数量过多，不宜直接剔除，故作为缺失值处理,用非0部分数组均值填充。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:10: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  # Remove the CWD from sys.path while we load stuff.\n"
     ]
    }
   ],
   "source": [
    "# 用舒张压均值替换0值\n",
    "# 舒张压非0数组\n",
    "TempBloodPressureN0 = train.BloodPressure\n",
    "TempBloodPressureN0 = TempBloodPressureN0[TempBloodPressureN0 != 0]\n",
    "# 舒张压非0数组均值\n",
    "MeanBloodPressure = sum(TempBloodPressureN0) / len(TempBloodPressureN0)\n",
    "size = train.shape[0]\n",
    "for i in range(0, size):\n",
    "    if train.BloodPressure.iloc[i] == 0:\n",
    "        train.BloodPressure[i] = MeanBloodPressure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAENCAYAAAABh67pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAEWFJREFUeJzt3X2wXVV9xvHvIyAqoBATEEM0KGkVaUUmAq1OB8UXoGjoTHVAWyLDTOoMjtJhpiL9Q7Fji7a+YGuZQaEGFZSilpShCkanDm1FgrUIBiUKhUgkQeRNfIH46x973/E03Jt77svh5q77/cycOWevs87ea2XdPHefdc9ZO1WFJKldT5rrBkiSRsugl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDVu97luAMDixYtr+fLlc90MSZpXbrzxxnuraslk9XaJoF++fDkbNmyY62ZI0ryS5H+HqefUjSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNW6X+GbsTFx6/Z1D133TUc8ZYUskadfkGb0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekho3adAnWZbka0k2JrklyTv68kVJrk1yW3+/X1+eJB9NsinJTUmOGHUnJEkTG+aM/jHgrKp6IXA0cEaSQ4GzgfVVtQJY328DHA+s6G9rgAtmvdWSpKFNGvRVtaWqvtU/fgjYCCwFVgFr+2prgZP6x6uAS6rzDWDfJAfOesslSUOZ0hx9kuXAS4DrgQOqagt0vwyA/ftqS4G7Bl62uS/bcV9rkmxIsmHbtm1Tb7kkaShDB32SvYHPA2dW1YM7qzpOWT2uoOrCqlpZVSuXLFkybDMkSVM0VNAn2YMu5D9TVV/oi+8Zm5Lp77f25ZuBZQMvPwi4e3aaK0maqmE+dRPgImBjVX1o4Kl1wOr+8WrgyoHyU/tP3xwNPDA2xSNJeuLtPkSdlwF/Cnwnybf7snOA84DLk5wO3Am8oX/uauAEYBPwCHDarLZYkjQlkwZ9VV3H+PPuAMeOU7+AM2bYLknSLPGbsZLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklq3KRBn+TiJFuT3DxQ9p4kP0ry7f52wsBz70qyKcn3krx2VA2XJA1nmDP6TwLHjVP+4ao6vL9dDZDkUOBk4EX9a/4xyW6z1VhJ0tRNGvRV9XXgviH3twr4bFX9sqpuBzYBR86gfZKkGZrJHP3bktzUT+3s15ctBe4aqLO5L5MkzZHpBv0FwPOBw4EtwAf78oxTt8bbQZI1STYk2bBt27ZpNkOSNJlpBX1V3VNV26vq18DH+c30zGZg2UDVg4C7J9jHhVW1sqpWLlmyZDrNkCQNYVpBn+TAgc0/AsY+kbMOODnJnkkOBlYA35xZEyVJM7H7ZBWSXAYcAyxOshl4N3BMksPppmXuAP4MoKpuSXI58F3gMeCMqto+mqZLkoYxadBX1SnjFF+0k/rvA943k0ZJkmaP34yVpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklq3KRBn+TiJFuT3DxQtijJtUlu6+/368uT5KNJNiW5KckRo2y8JGlyw5zRfxI4boeys4H1VbUCWN9vAxwPrOhva4ALZqeZkqTpmjToq+rrwH07FK8C1vaP1wInDZRfUp1vAPsmOXC2GitJmrrpztEfUFVbAPr7/fvypcBdA/U292WSpDky23+MzThlNW7FZE2SDUk2bNu2bZabIUkaM92gv2dsSqa/39qXbwaWDdQ7CLh7vB1U1YVVtbKqVi5ZsmSazZAkTWa6Qb8OWN0/Xg1cOVB+av/pm6OBB8ameCRJc2P3ySokuQw4BlicZDPwbuA84PIkpwN3Am/oq18NnABsAh4BThtBmyVJUzBp0FfVKRM8dew4dQs4Y6aNkiTNHr8ZK0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklq3KQXHpEGXXr9nUPVe9NRzxlxSyQNyzN6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4lykWMPzyw5LmH4N+HnJNeElT4dSNJDXOoJekxjl1o5FweknadXhGL0mNm9EZfZI7gIeA7cBjVbUyySLgc8By4A7gjVX105k1U5I0XbMxdfOKqrp3YPtsYH1VnZfk7H77nbNwnOb5EUdJozCKqZtVwNr+8VrgpBEcQ5I0pJkGfQHXJLkxyZq+7ICq2gLQ3+8/3guTrEmyIcmGbdu2zbAZkqSJzHTq5mVVdXeS/YFrk9w67Aur6kLgQoCVK1fWDNshSZrAjM7oq+ru/n4r8EXgSOCeJAcC9PdbZ9pISdL0TTvok+yVZJ+xx8BrgJuBdcDqvtpq4MqZNlKSNH0zmbo5APhikrH9XFpVX0pyA3B5ktOBO4E3zLyZkqTpmnbQV9UPgRePU/4T4NiZNEqSNHtcAqFhfi5fErgEgiQ1zzN6zanZftfhImnS43lGL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxLoEwA8N+fd+v5UuaS57RS1LjDHpJapxTN08A14WXNJcMejXFv5tIj+fUjSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIa56JmWpCmsqKoC6BpvvOMXpIaZ9BLUuMMeklqnHP00iS8mInmO8/oJalxIzujT3IccD6wG/CJqjpvVMeabV7jVVJLRhL0SXYDPga8GtgM3JBkXVV9dxTHk3YFTvFoVzWqqZsjgU1V9cOq+hXwWWDViI4lSdqJUU3dLAXuGtjeDBw1omNJTZrtKUTfSTyxdqV3eKMK+oxTVv+vQrIGWNNvPpzke9M81mLg3mEqvnmaB9hFDd3vhjTR52n8HM5Kv+fZz38TYz2MHcZlqv1+7jCVRhX0m4FlA9sHAXcPVqiqC4ELZ3qgJBuqauVM9zPfLMR+L8Q+w8Ls90LsM4yu36Oao78BWJHk4CRPBk4G1o3oWJKknRjJGX1VPZbkbcCX6T5eeXFV3TKKY0mSdm5kn6OvqquBq0e1/wEznv6ZpxZivxdin2Fh9nsh9hlG1O9U1eS1JEnzlksgSFLj5nXQJzkuyfeSbEpy9ly3ZxSSLEvytSQbk9yS5B19+aIk1ya5rb/fb67bOgpJdkvy30mu6rcPTnJ93+/P9X/sb0aSfZNckeTWfsx/byGMdZI/73++b05yWZKntDjWSS5OsjXJzQNl445vOh/t8+2mJEdM97jzNugHllk4HjgUOCXJoXPbqpF4DDirql4IHA2c0ffzbGB9Va0A1vfbLXoHsHFg+/3Ah/t+/xQ4fU5aNTrnA1+qqhcAL6bre9NjnWQp8HZgZVUdRvcBjpNpc6w/CRy3Q9lE43s8sKK/rQEumO5B523Qs0CWWaiqLVX1rf7xQ3T/8ZfS9XVtX20tcNLctHB0khwE/CHwiX47wCuBK/oqTfU7ydOBPwAuAqiqX1XV/SyAsab7YMhTk+wOPA3YQoNjXVVfB+7boXii8V0FXFKdbwD7JjlwOsedz0E/3jILS+eoLU+IJMuBlwDXAwdU1RbofhkA+89dy0bmI8BfAL/ut58J3F9Vj/XbrY3584BtwD/101WfSLIXjY91Vf0I+DvgTrqAfwC4kbbHetBE4ztrGTefg37SZRZakmRv4PPAmVX14Fy3Z9SSnAhsraobB4vHqdrSmO8OHAFcUFUvAX5GY9M04+nnpFcBBwPPBvaim7bYUUtjPYxZ+3mfz0E/6TILrUiyB13If6aqvtAX3zP2Nq6/3zpX7RuRlwGvT3IH3bTcK+nO8Pft395De2O+GdhcVdf321fQBX/rY/0q4Paq2lZVjwJfAH6ftsd60ETjO2sZN5+DfkEss9DPS18EbKyqDw08tQ5Y3T9eDVz5RLdtlKrqXVV1UFUtpxvbr1bVm4GvAX/cV2uq31X1Y+CuJL/dFx0LfJfGx5puyuboJE/rf97H+t3sWO9govFdB5zaf/rmaOCBsSmeKauqeXsDTgC+D/wA+Mu5bs+I+vhyurdrNwHf7m8n0M1Xrwdu6+8XzXVbR/hvcAxwVf/4ecA3gU3APwN7znX7ZrmvhwMb+vH+F2C/hTDWwLnArcDNwKeAPVsca+Ayur9DPEp3xn76RONLN3XzsT7fvkP3qaRpHddvxkpS4+bz1I0kaQgGvSQ1zqCXpMYZ9JLUOINekhpn0GuXlOQtSa6b4Lk3J7lmlo5TSQ6ZyXGSvCfJp2ejPdIoGPSaU0lenuQ/kzyQ5L4k/5HkpTt7TVV9pqpeM8S+z0nycH/7RZLtA9uTXtpy2ONIuzqDXnOmX63xKuDvgUV0CzadC/xyNvZfVX9dVXtX1d7AW4H/GtuuqhfNxjGk+cCg11z6LYCquqyqtlfVz6vqmqq6aceKSf42yXVJnrHjtE4//fLW/sINP03ysf6r9MN61XivHec4L+ovDHFfknuSnDNOO/foL5zx+SRP7qd1Lk9ySZKH+otrrByo/+y+7rYktyd5+8BzRybZkOTB/ngf6sufkuTTSX6S5P4kNyQ5YAr91QJj0GsufR/YnmRtkuMzzpWTkjwpyceB3wVeU1UPTLCvE4GX0l2s443Aa6fQjklfm2Qf4CvAl+hWWDyE7uvqg3WeSrdswS+BN1Z3nQSA19MtzLYv3fol/zDWN+Bfgf+hezdzLHBmkrHjnw+cX1VPB54PXN6XrwaeQbfg1TPp3q38fAr91QJj0GvOVLfc8thaPh8HtiVZN3B2ugfd2iCLgNdV1SM72d15VXV/Vd1JtxjW4VNoyjCvPRH4cVV9sKp+UVUP1W9WmQR4Ot0vgR8Ap1XV9oHnrquqq/uyT9H9QoHul8uSqnpvdRcZ+WH/73By//yjwCFJFlfVw9VdfGKs/JnAIf07oRtrASxdrekz6DWnqmpjVb2lqg4CDqM7W/5I//QhdOuUnztwdjyRHw88fgTYewrNGOa1y+hCfCJH073rOK8ev4DUjvt/Sr/87nOBZ/fTL/cnuR84Bxj7RXc63fTWrf30zIl9+aeALwOfTXJ3kg/0S1lL4zLotcuoqlvprql5WF+0ETgN+LeBpXvnyl100ycTuQb4G2D9FObL76Jbh33fgds+VXUCQFXdVlWn0F1x6P3AFUn2qqpHq+rcqjqUbt32E4FTp9sxtc+g15xJ8oIkZ6W7NixJlgGnAGNTFFTVZXRnuV9JsrOgHbWrgGclOTPJnkn2SXLUYIWq+gBwKV3YLx5in98EHkzyziRPTbJbksPGPl6a5E+SLKmqXwP396/ZnuQVSX4nyW7Ag3RTOdvHP4Rk0GtuPQQcBVyf5Gd0AX8zcNZgpapaC7wX+Gq66+Y+4aq7MPurgdfRTcXcBrxinHp/RfcH2a8kWTTJPrf3+zscuB24l+5C6M/oqxwH3JLkYbo/zJ5cVb8AnkV39akH6d71/DvgF7Y0Idejl6TGeUYvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mN+z9O5p1NsaDeKwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 三头肌皮肤褶层厚度（mm） SkinThickness\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.SkinThickness.values, bins=30, kde=False)\n",
    "pyplot.xlabel('SkinThickness', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "三头肌皮褶厚度的标准值：男性为12.5 mm，女性为16.5 mm，部分数据为0，显然为异常值，但数量过多，不宜直接剔除，故作为缺失值处理，用非0部分数组均值填充。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:10: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  # Remove the CWD from sys.path while we load stuff.\n"
     ]
    }
   ],
   "source": [
    "# 用三头肌皮褶厚度均值替换0值\n",
    "# 三头肌皮褶厚度非0数组\n",
    "TempSkinThicknessN0 = train.SkinThickness\n",
    "TempSkinThicknessN0 = TempSkinThicknessN0[TempSkinThicknessN0 != 0]\n",
    "# 三头肌皮褶厚度非0数组均值\n",
    "MeanSkinThickness = sum(TempSkinThicknessN0) / len(TempSkinThicknessN0)\n",
    "size = train.shape[0]\n",
    "for i in range(0, size):\n",
    "    if train.SkinThickness.iloc[i] == 0:\n",
    "        train.SkinThickness[i] = MeanSkinThickness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 2 小时血清胰岛素含量（μU/ ml） Insulin\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.Insulin.values, bins=30, kde=False)\n",
    "pyplot.xlabel('Insulin', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "成年人空腹胰岛素参考正常值：2.6～24.9μU/ ml，餐后正常人血清胰岛素峰值约为空腹时的5～10倍，即13～249μU/ ml，大量数据为0，显然异常，用非0数据均值替换。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:10: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  # Remove the CWD from sys.path while we load stuff.\n"
     ]
    }
   ],
   "source": [
    "# 用2 小时血清胰岛素含量均值替换0值\n",
    "# 2 小时血清胰岛素含量非0数组\n",
    "TempInsulinN0 = train.Insulin\n",
    "TempInsulinN0 = TempInsulinN0[TempInsulinN0 != 0]\n",
    "# 2 小时血清胰岛素含量非0数组均值\n",
    "MeanInsulin = sum(TempInsulinN0) / len(TempInsulinN0)\n",
    "size = train.shape[0]\n",
    "for i in range(0, size):\n",
    "    if train.Insulin.iloc[i] == 0:\n",
    "        train.Insulin[i] = MeanInsulin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 体重指数（体重，kg /（身高，m）^ 2） BMI\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.BMI.values, bins=30, kde=False)\n",
    "pyplot.xlabel('BMI', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "体重指数中，少量数据为0，异常，予以剔除。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(752, 9)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#剔除异常点\n",
    "train = train[train.BMI > 0]\n",
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 糖尿病家族史 DiabetesPedigreeFunction\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.DiabetesPedigreeFunction.values, bins=30, kde=False)\n",
    "pyplot.xlabel('DiabetesPedigreeFunction', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 年龄（岁） Age\n",
    "fig = pyplot.figure()\n",
    "sns.distplot(train.Age.values, bins=30, kde=False)\n",
    "pyplot.xlabel('Age', fontsize=12)\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 两两特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#get the names of all the columns\n",
    "cols = train.columns \n",
    "\n",
    "# Calculates pearson co-efficient for all combinations，通常认为相关系数大于0.5的为强相关\n",
    "data_corr = train.corr().abs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9, 9)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_corr.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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cHDHAX4J+YUHhj9Irtw5eXrcswCcCj/JK31GA/Dqd28QVC6InHly8sX6CXw4dCxbVm72ZpMyjo/+Dowuo/wvGGN+s9bmvWpZaWCuZ97I5WXNgDeAywPRR1hrfzTGdADeAk4BvwDFrLU9jDEvAr9Za9/2bL8TaA9EALOA4sA+3PNmXrTWLk+cizGmG9DeWnu/ZzL/p0BZ3JWZftbatVfFPw485MntN6AnUN6TWzzuDk0/a23Sr7IS8dZllDOT9LiMclaRnpdRzirS8jLKWVFaXkY5q0rLyyhnRWl5GeWsKt0uo5xFpNdllLOSTHcZ5V1L0/8yylVuz/A2qwPjRcaYvJ6qhwE+Ag5Ya8d4O69/Qh0YdWD+69SByVSf2V6hDoxOXtWB0TGQ6TowO0PSvwNTtYV+B+Y/pq9nYv8u3MPDPvFyPiIiIiIimZrmwHiRp9qSJSsuIiIiIpLJ+egcGFVgREREREQky1AFRkRERETEB1nr8nYK6UIVGBERERERyTJUgRERERER8UVWc2BERERERES8ShUYERERERFfpKuQiYiIiIiIeJcqMCIiIiIivshH58CoAyMiIiIi4ovidRllERERERERr1IFRkRERETEF/noEDJVYEREREREJMtQBUZERERExBfpMsoiIiIiIiLepQqMiIiIiIgv0hwYERERERER71IFRkRERETEF2kOjIiIiIiIiHepAiMiIiIi4otUgREREREREfEuVWBE0siWXd94OwWvqlO1l7dT8KqCOfN6OwWv6lMg2NspeN0++7u3U/CqvX9GezsFr3vjYh5vp+BVw+J889v+rMxal7dTSBfqwEiauKXKvd5Owav+650XERERkYyiDoyIiIiIiC/SHBgRERERERHvUgVGRERERMQXWVVgREREREREvEoVGBERERERX6Q5MCIiIiIiIt6lCoyIiIiIiC/y0Tkw6sCIiIiIiPgiDSETERERERHxLlVgRERERER8kY8OIVMFRkREREREsgxVYEREREREfJHmwIiIiIiIiHiXKjAiIiIiIr5IFRgRERERERHvUgVGRERERMQX6SpkIiIiIiIi3qUKjIiIiIiIL9IcGBEREREREe9SBUZERERExBdpDoyIiIiIiIh3qQMjmd5tTesx5+fpzF83gz6P9Uq2vla9YL4NmcjWsNW0aN80YXlAkD/TF0/gu6WTmLXi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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pyplot.subplots(figsize=(13, 9))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features\n",
    "sns.heatmap(data_corr, mask=data_corr < 1, cbar=False)\n",
    "\n",
    "pyplot.savefig('PimaIndiansDiabetes.png' )\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pregnancies and Age = 0.55\n"
     ]
    }
   ],
   "source": [
    "#Set the threshold to select only highly correlated attributes\n",
    "threshold = 0.5\n",
    "# List of pairs along with correlation above threshold\n",
    "corr_list = []\n",
    "#size = data.shape[1]\n",
    "size = data_corr.shape[0]\n",
    "\n",
    "#Search for the highly correlated pairs\n",
    "for i in range(0, size): #for 'size' features\n",
    "    for j in range(i+1,size): #avoid repetition\n",
    "        if (data_corr.iloc[i,j] >= threshold and data_corr.iloc[i,j] < 1) or (data_corr.iloc[i,j] < 0 and data_corr.iloc[i,j] <= -threshold):\n",
    "            corr_list.append([data_corr.iloc[i,j],i,j]) #store correlation and columns index\n",
    "\n",
    "#Sort to show higher ones first            \n",
    "s_corr_list = sorted(corr_list,key=lambda x: -abs(x[0]))\n",
    "\n",
    "#Print correlations and column names\n",
    "for v,i,j in s_corr_list:\n",
    "    print (\"%s and %s = %.2f\" % (cols[i],cols[j],v))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "小结：   \n",
    "经相关性分析得到，怀孕次数和年龄相关性系数较高，为0.55，因数据集特征数量有限，且相关性系数不是很高，故不删除特征。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练数据和测试数据分割"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(601, 8)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 从原始数据中分离输入特征x和输出y\n",
    "y = train['Outcome'].values\n",
    "X = train.drop('Outcome', axis = 1)\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 33, test_size = 0.2)\n",
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(601,)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 初始化特征的标准化器\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logistic 回归"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Logistic 回归默认参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "lr= LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy of each fold is:  [0.7768595  0.76859504 0.78333333 0.79166667 0.7394958 ]\n",
      "cv accuracy is: 0.7719900687547746\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# 交叉验证用于评估模型性能和进行参数调优（模型选择）\n",
    "#分类任务中交叉验证缺省是采用StratifiedKFold\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "accuracy = cross_val_score(lr, X_train, y_train, cv=5) # 5折交叉验证   \n",
    "print('accuracy of each fold is: ',accuracy)\n",
    "print('cv accuracy is:', accuracy.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 正则化的 Logistic Regression及参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "logistic回归的需要调整超参数有：C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1） 目标函数为：J = sum(logloss(f(xi), yi)) + C* penalty \n",
    "在sklearn框架下，不同学习器的参数调整步骤相同： 设置候选参数集合 调用GridSearchCV 调用fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "# 请尝试将L1正则和L2正则分开，并配合合适的优化求解算法（slover）\n",
    "#tuned_parameters = {'penalty':['l1','l2'],\n",
    "#                   'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "#                   }\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5 ) # scoring='neg_log_loss'\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00099654, 0.00100107, 0.00059814, 0.00119648, 0.00079832,\n",
       "        0.00079765, 0.00079784, 0.00099831, 0.00099707, 0.00099754,\n",
       "        0.00079761, 0.00059838, 0.00059862, 0.00059838]),\n",
       " 'std_fit_time': array([1.53331139e-06, 6.31745846e-04, 4.88382972e-04, 4.00496395e-04,\n",
       "        3.99160969e-04, 3.98826713e-04, 3.98922223e-04, 8.71451706e-07,\n",
       "        3.37174788e-07, 3.98950589e-07, 3.98803253e-04, 4.88577656e-04,\n",
       "        4.88773006e-04, 4.88577702e-04]),\n",
       " 'mean_score_time': array([0.00039907, 0.00079536, 0.00019917, 0.00020132, 0.00039868,\n",
       "        0.00019946, 0.00019932, 0.        , 0.        , 0.00019946,\n",
       "        0.00039892, 0.00039897, 0.00039892, 0.00039859]),\n",
       " 'std_score_time': array([0.00048875, 0.00074567, 0.00039835, 0.00040264, 0.00048829,\n",
       "        0.00039892, 0.00039864, 0.        , 0.        , 0.00039892,\n",
       "        0.00048858, 0.00048864, 0.00048858, 0.00048817]),\n",
       " 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
       "                    100, 1000, 1000],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'split0_test_score': array([0.6446281 , 0.76033058, 0.69421488, 0.7768595 , 0.73553719,\n",
       "        0.76859504, 0.78512397, 0.7768595 , 0.7768595 , 0.7768595 ,\n",
       "        0.7768595 , 0.7768595 , 0.7768595 , 0.7768595 ]),\n",
       " 'split1_test_score': array([0.6446281 , 0.74380165, 0.7768595 , 0.76859504, 0.78512397,\n",
       "        0.76859504, 0.7768595 , 0.76859504, 0.76859504, 0.76859504,\n",
       "        0.76859504, 0.76859504, 0.76859504, 0.76859504]),\n",
       " 'split2_test_score': array([0.65      , 0.75      , 0.73333333, 0.79166667, 0.79166667,\n",
       "        0.78333333, 0.78333333, 0.78333333, 0.78333333, 0.78333333,\n",
       "        0.78333333, 0.78333333, 0.78333333, 0.78333333]),\n",
       " 'split3_test_score': array([0.65      , 0.80833333, 0.71666667, 0.79166667, 0.8       ,\n",
       "        0.79166667, 0.79166667, 0.79166667, 0.79166667, 0.79166667,\n",
       "        0.79166667, 0.79166667, 0.79166667, 0.79166667]),\n",
       " 'split4_test_score': array([0.64705882, 0.7394958 , 0.68907563, 0.7394958 , 0.75630252,\n",
       "        0.7394958 , 0.7394958 , 0.7394958 , 0.7394958 , 0.7394958 ,\n",
       "        0.7394958 , 0.7394958 , 0.7394958 , 0.7394958 ]),\n",
       " 'mean_test_score': array([0.64725458, 0.76039933, 0.72212978, 0.77371048, 0.77371048,\n",
       "        0.7703827 , 0.77537438, 0.77204659, 0.77204659, 0.77204659,\n",
       "        0.77204659, 0.77204659, 0.77204659, 0.77204659]),\n",
       " 'std_test_score': array([0.00240733, 0.02494686, 0.03173793, 0.01917842, 0.02412435,\n",
       "        0.01772345, 0.01844215, 0.0178649 , 0.0178649 , 0.0178649 ,\n",
       "        0.0178649 , 0.0178649 , 0.0178649 , 0.0178649 ]),\n",
       " 'rank_test_score': array([14, 12, 13,  2,  2, 11,  1,  4,  4,  4,  4,  4,  4,  4]),\n",
       " 'split0_train_score': array([0.64791667, 0.76875   , 0.72916667, 0.78125   , 0.78125   ,\n",
       "        0.78333333, 0.78125   , 0.78541667, 0.78541667, 0.78541667,\n",
       "        0.78541667, 0.78541667, 0.78541667, 0.78541667]),\n",
       " 'split1_train_score': array([0.64791667, 0.76875   , 0.70833333, 0.775     , 0.77083333,\n",
       "        0.78125   , 0.77916667, 0.78125   , 0.77916667, 0.77916667,\n",
       "        0.77916667, 0.77916667, 0.77916667, 0.77916667]),\n",
       " 'split2_train_score': array([0.64656965, 0.76715177, 0.71933472, 0.77338877, 0.77754678,\n",
       "        0.78170478, 0.77962578, 0.78170478, 0.78170478, 0.78170478,\n",
       "        0.78170478, 0.78170478, 0.78170478, 0.78170478]),\n",
       " 'split3_train_score': array([0.64656965, 0.76299376, 0.72349272, 0.77338877, 0.76091476,\n",
       "        0.78170478, 0.77754678, 0.77754678, 0.77754678, 0.77546778,\n",
       "        0.77546778, 0.77546778, 0.77546778, 0.77546778]),\n",
       " 'split4_train_score': array([0.6473029 , 0.77593361, 0.73029046, 0.78838174, 0.77593361,\n",
       "        0.78630705, 0.78630705, 0.78630705, 0.78630705, 0.78630705,\n",
       "        0.78630705, 0.78630705, 0.78630705, 0.78630705]),\n",
       " 'mean_train_score': array([0.64725511, 0.76871583, 0.72212358, 0.77828186, 0.7732957 ,\n",
       "        0.78285999, 0.78077926, 0.78244506, 0.78202839, 0.78161259,\n",
       "        0.78161259, 0.78161259, 0.78161259, 0.78161259]),\n",
       " 'std_train_score': array([0.00060288, 0.00417821, 0.00795143, 0.0058219 , 0.00703778,\n",
       "        0.00186373, 0.00300526, 0.00315325, 0.00341076, 0.00400646,\n",
       "        0.00400646, 0.00400646, 0.00400646, 0.00400646])}"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# view the complete results (list of named tuples)\n",
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7753743760399334\n",
      "{'C': 1, 'penalty': 'l1'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "正则化的 Logistic Regression最优参数为l1正则且C=1，最优accuracy为0.7753743760399334。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i] ,label = penaltys[i] +' Test')\n",
    "    pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i] ,label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SVM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### SVM默认参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "SVC1 = LinearSVC().fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.77      0.92      0.84        99\n",
      "          1       0.76      0.48      0.59        52\n",
      "\n",
      "avg / total       0.77      0.77      0.75       151\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[91  8]\n",
      " [27 25]]\n",
      "SVC默认参数模型accuracy: 0.7682119205298014\n"
     ]
    }
   ],
   "source": [
    "#在校验集上测试，估计模型性能\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "y_predict = SVC1.predict(X_test)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC1, classification_report(y_test, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % confusion_matrix(y_test, y_predict))\n",
    "print(\"SVC默认参数模型accuracy: {}\".format(SVC1.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 线性SVM正则参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线性SVM LinearSVC的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1） \n",
    "采用交叉验证。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C, X_train, y_train, X_test, y_test):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_test, y_test)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7549668874172185\n",
      "accuracy: 0.7615894039735099\n",
      "accuracy: 0.7615894039735099\n",
      "accuracy: 0.7748344370860927\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7086092715231788\n",
      "accuracy: 0.543046357615894\n",
      "线性SVM 最优accuracy： 0.7748344370860927\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHqpJREFUeJzt3X2QVPWd7/H3x0HAZ5AZ5GFGBw0a0SjG0URJGR9AwSj4FOWhb5lNJalNrjFJ7c3m6d7rrlZqc2urNtm68e7GzWZrYxBE8QGjCVF8ikYNg4oKxIgkyohGxIdoBHn63j/OmaWBgW6GOX1O93xeVV095/Tp7u8ptT/+fud3fj9FBGZmZruzT94FmJlZ8TkszMysIoeFmZlV5LAwM7OKHBZmZlaRw8LMzCpyWJiZWUUOCzMzq8hhYWZmFQ3Iu4C+0tzcHO3t7XmXYWZWV5YsWfJGRLRUOq5hwqK9vZ3Ozs68yzAzqyuSXqrmOHdDmZlZRQ4LMzOryGFhZmYVNcw1CzOz/m7Tpk10dXWxYcOGnV4bPHgwra2t7Lvvvr36bIeFmVmD6Orq4qCDDqK9vR1J/7U/Ili3bh1dXV2MGTOmV5/tbigzswaxYcMGhg0btl1QAEhi2LBhPbY4quWwMDNrIDsGRaX91XI3lFlGNmyAJ5+EJ55IttvaoLU1eR4xApqa8q3PbE84LMz6yOrV8Nhj2x5PPgmbNvV8bFMTjBq1LTx6enagWJE4LMx64YMPkjAoD4dXXkleGzwYTjkFvvY1OO00+PjHYeDAJEy6unZ+fuopuOsuWL9+++/oDpRdhUlbGxx2mAPFthcRPXY5RcRefa7DwqwKXV07txo2bkxea2+HM85IguG00+DEE6Gn0YmHHpq81pMIePPNnsNk9eokUBYsSLq2yg0YULmF4kDpPwYPHsy6det2usjdPRpq8ODBvf5s7W3aFEVHR0d4bijrCx98kPw4l4dDV1fy2uDB0NGxLRhOOy3pLqqF7kDZVQul+9mB0n/15j4LSUsioqPSZzssrN975ZXtg2HJkm2thiOO2D4YTjwx6VIqqghYt273YbJ6dRKI5boDpVKX1z4eP9lwHBZmPdi4cedWw+rVyWuDBu3cahg5Mt96s9AdKJVaKD0FSns7/PCHcN55uZRuGag2LHzNwhramjU7txq6fwQPPxxOP31bMIwfX+xWQ1+RoLk5eZx0Us/HRMAbb+wcIgsWwLRpcOedDoz+xi0LaxgbN8LTT28fDi+/nLw2aBCcfPL2rYZRo/Kttx6tWwcTJ8KKFQ6MRuGWhTW8V1/dudXQfV2vrS0JhO7hqyed1D9aDVkbNgzuuy8JjGnTkpbGuefmXZXVgsPC6sLGjbB06fbh8FK6vtfAgUmr4Utf2tZqGD0633obWXdgnHMOTJ3qwOgvHBYNYtOmpH/+9deT/uZGUD5KqbNzW6uhtTUJhK98ZVurYdCgfGvtb4YNg0WLksDovobhwGhsDos6sGlT0uWyu9Err73WOCFRbuBA+OhH4Ytf3NZqaG3NuyqDnrukJk3KuyrLisMiZ5s3Jy2C3Q1hfO012Lp1+/cdeOC2MfDHH9+Y0z8ceqhbDUXX3Lxzl5QDozE5LDK0eXN1LYIdg+CAA5If/rY2OO64nm+QOvjgZAikWd6am7d1SU2dmsxzNXFi3lVZX3NY9FJ3EOyuRfDqq7sOgtbWZNhhT3fLHnKIg8DqS3lgXHihA6MROSx6sHlz8n/8u2sR9BQE+++/rUUwaVLPLQIHgTWq7sA4+2wHRiPq92Hx1ltw3XU7twi2bNn+uP322xYEEyf2HARDhjgIrH9rbob7798WGD//edLasPrX78OiqQn+9V+3/eifc07PXUNDhzoIzKpR3iV1wQUOjEaRaVhImgz8M9AE/DgivrfD698Hzko39weGR8SQ9LUtwLPpay9HxNQsajz4YPjLXxwEZn2ppWXnaxgOjPqWWVhIagKuByYBXcBiSQsiYnn3MRHxtbLjvwyUT2u2PiLGZ1Xf9rXW4lvM+pfuwCjvkjr77Lyrst7Kcnb6U4GVEbEqIjYCc4Fpuzl+BjAnw3rMrMZaWpJrGEcdlXRJ3X9/3hVZb2UZFqOB1WXbXem+nUg6AhgDlP+rNFhSp6THJV20i/d9IT2mc+3atX1Vt5n1oe4WhgOjvmUZFj117uxqQorpwK0RUT4G6fB02tyZwA8kHbXTh0XcEBEdEdHR0tKy9xWbWSaGD08C48gjk8B44IG8K7I9lWVYdAFtZdutwJpdHDudHbqgImJN+rwKeJDtr2eYWZ0ZPjxpVRx5JHzqU/Dgg3lXZHsiy7BYDIyVNEbSQJJAWLDjQZKOAYYCj5XtGyppUPp3MzABWL7je82svpQHxvnnOzDqSWZhERGbgauAhcAKYF5ELJN0raTyYbAzgLmx/ZJ9xwKdkpYCDwDfKx9FZWb1qzswxoxxC6OeeFlVM8vF66/DWWfBH/8I99wDn/xk3hX1T9Uuq5plN5SZ2S51tzDa25MuqYceyrsi2x2HhZnl5rDDksA44ggHRtE5LMwsV4cdlgyl7Q6Mhx/OuyLricPCzHJX3sKYMsWBUUQOCzMrhBEjksA4/HC3MIrIYWFmhTFiRNIl1daWBMavf513RdbNYWFmhVIeGFOmODCKwmFhZoXT3SXlwCgOh4WZFdLIkUlgtLYmgfHII3lX1L85LMyssEaOTLqkWlth8mQHRp4cFmZWaOWB4RZGfhwWZlZ43YExalQSGI8+mndF/Y/DwszqwsiRyQy1o0YlXVIOjNpyWJhZ3ShvYTgwasthYWZ1ZdSo7QPjN7/Ju6L+wWFhZnWnOzBGjoTzznNg1ILDwszq0qhRyTWMkSPdwqgFh4WZ1a3uFsaIEUlgPPZY3hU1LoeFmdW10aO3BcZ55zkwsuKwMLO61x0Yhx3mwMiKw8LMGsLo0ck1jO7AePzxvCtqLA4LM2sY5S2Mc891YPQlh4WZNZTW1iQwhg93C6MvOSzMrOG0tiZdUi0tSWA88UTeFdU/h4WZNaTywDj3XAfG3nJYmFnD6u6ScmDsPYeFmTW0trYkMJqbk8D47W/zrqg+OSzMrOG1tSVdUs3NMGmSA6M3HBZm1i+UB4ZbGHvOYWFm/UZ3l9SwYclcUu+8k3dF9cNhYWb9yuGHw89+Bm+9Bbfdlnc19cNhYWb9zsc/Dh/6UBIaVh2HhZn1OxKUSkmXVFdX3tXUh0zDQtJkSc9LWinpmz28/n1JT6eP30t6u+y1KyW9kD6uzLJOM+t/Zs2CCJgzJ+9K6oMiIpsPlpqA3wOTgC5gMTAjIpbv4vgvAydFxGclHQp0Ah1AAEuAkyPirV19X0dHR3R2dvbxWZhZIzvtNHj/fVi6NO9K8iNpSUR0VDouy5bFqcDKiFgVERuBucC03Rw/A+jO+POAeyPizTQg7gUmZ1irmfVDpRI880zysN3LMixGA6vLtrvSfTuRdAQwBrh/T99rZtZbl18OAwbA7Nl5V1J8WYaFeti3qz6v6cCtEbFlT94r6QuSOiV1rl27tpdlmll/1dKS3G8xezZs3Zp3NcWWZVh0AW1l263Aml0cO51tXVBVvzciboiIjojoaGlp2ctyzaw/KpXglVfgoYfyrqTYsgyLxcBYSWMkDSQJhAU7HiTpGGAoUL5q7kLgXElDJQ0Fzk33mZn1qQsvhIMO8j0XlWQWFhGxGbiK5Ed+BTAvIpZJulbS1LJDZwBzo2xYVkS8CVxHEjiLgWvTfWZmfWr//eHSS+HWW2H9+ryrKa7Mhs7WmofOmllvLVoEEyfCvHnw6U/nXU1tFWHorJlZXTjzTBg1yl1Ru+OwMLN+r6kJZs6Ee+6BN97Iu5picliYmZGMitq8GW65Je9KislhYWYGnHACHH+8u6J2xWFhZsa2mWh/8xtYtSrvaorHYWFmlpo5M3n29B87c1iYmaXa2pKRUT/7WTJ9uW3jsDAzK1Mqwe9/D75ta3sOCzOzMpdeCoMG+UL3jhwWZmZlhgxJ5ouaMwc2bcq7muKoKiwkzZf0KUkOFzNreKUSrF0L992XdyXFUe2P/78AM4EXJH1P0oczrMnMLFdTpsChh7orqlxVYRER90XELOCjwB+BeyX9RtJfSdo3ywLNzGpt4MBkFb3bb4d33827mmKoultJ0jDgM8DngKeAfyYJj3szqczMLEezZiVTlt9xR96VFEO11yxuA34N7A9cGBFTI+LmiPgycGCWBZqZ5eH006G93V1R3aptWfwwIsZFxD9ExKvlL1QzD7qZWb3ZZ5+kdXHfffDqq5WPb3TVhsWxkoZ0b6TLnX4po5rMzAph1izYuhXmzs27kvxVGxafj4i3uzci4i3g89mUZGZWDMceCyef7K4oqD4s9pGk7g1JTcDAbEoyMyuOUgmefBKWL8+7knxVGxYLgXmSzpF0NjAH+GV2ZZmZFcP06cn1i/4+E221YfEN4H7gi8B/BxYBf5tVUWZmRTFiBEyalITF1q15V5Ofam/K2xoR/xIRl0XEpRHxo4jYknVxZmZFUCrBSy/Bo4/mXUl+qr3PYqykWyUtl7Sq+5F1cWZmRXDRRbD//v27K6rabqj/IJkfajNwFvBT4MasijIzK5IDD4SLL4Z58+CDD/KuJh/VhsV+EbEIUES8FBF/B5ydXVlmZsVSKsFbb8EvfpF3JfmoNiw2pNOTvyDpKkkXA8MzrMvMrFAmToThw/vvPRfVhsVXSeaFuho4GSgBV2ZVlJlZ0QwYADNmwF13wdtvVz6+0VQMi/QGvMsj4r2I6IqIv0pHRD1eg/rMzAqjVIKNG+HWW/OupPYqhkU6RPbk8ju4zcz6o5NPhmOO6Z9dUdV2Qz0F3Cnpv0m6pPuRZWFmZkUjJa2Lhx6Cl1/Ou5raqjYsDgXWkYyAujB9XJBVUWZmRTVzZvJ800351lFrioi8a+gTHR0d0dnZmXcZZtYPfOITyTDa555LWhv1TNKSatYlGlDlh/0HsFOqRMRne1GbmVldK5Xgi1+EpUth/Pi8q6mNaruhfg7cnT4WAQcD72VVlJlZkX3607Dvvv3rQne1EwnOL3vMBi4Hjq/0PkmTJT0vaaWkb+7imMvTOaeWSbqpbP8WSU+njwXVnpCZWdaGDYPzz0+uW2zpJ1OqVtuy2NFY4PDdHZDen3E9MAUYB8yQNG6HY8YC3wImRMRxJDf/dVsfEePTx9Re1mlmlolSKVmb+4EH8q6kNqqddfZdSX/ufgB3kaxxsTunAisjYlVEbATmAtN2OObzwPXpMq1ExOt7Vr6ZWT4uuAAOPrj/dEVV2w11UEQcXPY4OiLmV3jbaGB12XZXuq/c0cDRkh6V9LikyWWvDZbUme6/qJo6zcxqZfDg5NrF/Pnw/vt5V5O9alsWF0s6pGx7SBU/4D0NKNtxRNUAki6tM4EZwI8lDUlfOzwdzjUT+IGko3qo6wtpoHSuXbu2mlMxM+szpRK89x4s6AdXVau9ZnFNRLzTvRERbwPXVHhPF9BWtt0KrOnhmDsjYlNE/AF4niQ8iIg16fMq4EHgpB2/ICJuiIiOiOhoaWmp8lTMzPrGGWdAa2v/6IqqNix6Oq7SPRqLgbGSxkgaCEwHdszfO0gWU0JSM0m31CpJQyUNKts/AVheZa1mZjWxzz4waxb88pfQ6J0b1YZFp6R/knSUpCMlfR9Ysrs3RMRm4CpgIbACmBcRyyRdK6l7dNNCYJ2k5cADwNcjYh1wbPqdS9P934sIh4WZFU6plAyfvfnmvCvJVlXTfUg6APhfwMR016+A70bEXzKsbY94ug8zy8v48ckF78frcOGGPp3uIw2FHm+qMzPr70ol+PrX4YUXYOzYvKvJRrWjoe4tG6VEek1hYXZlmZnVjxkzkgkFZ8/Ou5LsVHvNojkdAQVAehOd1+A2MwNGj4azz05GRTXIRN47qTYstkr6r+k9JLXTwyy0Zmb9VakEL74ITzyRdyXZqDYsvgM8IulGSTcCD5HM6WRmZsAllyQXuRv1notqp/v4JdBBctPczcDfAOszrMvMrK4cfDBMnQpz58KmTXlX0/eqvcD9OZJ1LP4mfdwI/F12ZZmZ1Z9SCdatg4UNOPyn2m6orwCnAC9FxFkkU280+P2KZmZ75rzzkrUuGrErqtqw2BARGwAkDYqI3wHHZFeWmVn9GTgQrrgC7rwT/vznvKvpW9WGRVd6n8UdwL2S7mTnSQHNzPq9Ugk2bIDbbsu7kr5V1XQf271B+iRwCPDLdFGjQvB0H2ZWBBHwoQ/BmDFw3315V1NZtdN97PGyqhHxUEQsKFJQmJkVhZS0Lu6/H155Je9q+k5v1+A2M7NdmDUraWHMmZN3JX3HYWFm1seOPhpOPbWxRkU5LMzMMlAqwdKl8OyzeVfSNxwWZmYZuOIKaGpqnJloHRZmZhkYPjy5SW/2bNi6Ne9q9p7DwswsI6USdHXBww/nXcnec1iYmWVk2jQ48MDG6IpyWJiZZWT//ZOpy2+5Jbmru545LMzMMlQqwTvvwN13513J3nFYmJll6OyzYcSI+r/nwmFhZpahpiaYOTNpWbz5Zt7V9J7DwswsY6VSsnreLbfkXUnvOSzMzDI2fjyMG1ffXVEOCzOzjHXPRPvII/CHP+RdTe84LMzMamDmzOT5ppvyraO3HBZmZjVwxBFwxhlJV9QerjlXCA4LM7MaKZXgd7+DJ5/Mu5I957AwM6uRyy6DgQPr80K3w8LMrEaGDoULLkhW0Nu8Oe9q9ozDwsyshkol+NOfYNGivCvZMw4LM7MaOv98GDKk/rqiHBZmZjU0aBBcfjncdhu8917e1VQv07CQNFnS85JWSvrmLo65XNJyScsk3VS2/0pJL6SPK7Os08yslkoleP99uPPOvCupXmZhIakJuB6YAowDZkgat8MxY4FvARMi4jjgq+n+Q4FrgI8BpwLXSBqaVa1mZrU0YUJy30U9dUVl2bI4FVgZEasiYiMwF5i2wzGfB66PiLcAIuL1dP95wL0R8Wb62r3A5AxrNTOrmX32gVmz4Fe/Si5214Msw2I0sLpsuyvdV+5o4GhJj0p6XNLkPXgvkr4gqVNS59q1a/uwdDOzbM2aBVu3wty5eVdSnSzDQj3s2/Em9wHAWOBMYAbwY0lDqnwvEXFDRHREREdLS8telmtmVjvjxsFJJ9VPV1SWYdEFtJVttwJrejjmzojYFBF/AJ4nCY9q3mtmVtdKJejsTKYAKbosw2IxMFbSGEkDgenAgh2OuQM4C0BSM0m31CpgIXCupKHphe1z031mZg1j+vTk+sXs2XlXUllmYRERm4GrSH7kVwDzImKZpGslTU0PWwisk7QceAD4ekSsi4g3getIAmcxcG26z8ysYYwaBeecUx8z0SqKXmGVOjo6orOzM+8yzMz2yE9/CldemSyMNGFC7b9f0pKI6Kh0nO/gNjPL0cUXw377Ff9Ct8PCzCxHBx0EF10EN98MGzfmXc2uOSzMzHJWKsFbb8EvfpF3JbvmsDAzy9mkSdDSUuyuKIeFmVnO9t03GUZ7113w9tt5V9Mzh4WZWQGUSvDBBzB/ft6V9MxhYWZWAKecAmPHFrcrymFhZlYAUtK6ePBBePnlvKvZmcPCzKwgZs1KnufMybeOnjgszMwK4qij4LTT4MYbizf9h8PCzKxASiVYtgyeeSbvSrbnsDAzK5DLL4cBA4p3odthYWZWIM3NMGUK3HQTbNmSdzXbOCzMzAqmVII1a5KRUUXhsDAzK5gLL0wmGCzSokgOCzOzgtlvP7jsMrj1Vli/Pu9qEg4LM7MCKpXg3XeT+aKKwGFhZlZAn/wkjB5dnFFRDgszswJqaoKZM5M1Lt54I+9qHBZmZoVVKsHmzTBvXt6VOCzMzArrhBPgIx8pRleUw8LMrMBKJXjsMXjxxXzrcFiYmRXYjBnJ9OV533PhsDAzK7C2NjjzzKQrKs+ZaB0WZmYFVyrBCy/A4sX51eCwMDMruEsvhUGD8r3Q7bAwMyu4Qw6BqVNh7lzYtCmfGhwWZmZ1YNYsWLsW7r03n+93WJiZ1YEpU+DQQ/PrinJYmJnVgYEDk1X07rgjmWCw1hwWZmZ1olRKpiy//fbaf7fDwsysTpx+OrS359MV5bAwM6sTUtK6WLQoWXa1ljINC0mTJT0vaaWkb/bw+mckrZX0dPr4XNlrW8r2L8iyTjOzejFrFmzdmgyjraXMwkJSE3A9MAUYB8yQNK6HQ2+OiPHp48dl+9eX7Z+aVZ1mZvXkwx+Gjo7ad0Vl2bI4FVgZEasiYiMwF5iW4feZmfULpRI89RQsW1a778wyLEYDq8u2u9J9O7pU0jOSbpXUVrZ/sKROSY9LuijDOs3M6sr06clKerWciTbLsFAP+3acM/EuoD0iTgDuA/6z7LXDI6IDmAn8QNJRO32B9IU0UDrXrl3bV3WbmRXaYYfBpElJWGzdWpvvzDIsuoDylkIrsN31+4hYFxEfpJv/Bpxc9tqa9HkV8CBw0o5fEBE3RERHRHS0tLT0bfVmZgVWKsHLL8Mjj9Tm+7IMi8XAWEljJA0EpgPbjWqSNLJscyqwIt0/VNKg9O9mYAKwPMNazczqykUXwQEH1O5Cd2ZhERGbgauAhSQhMC8ilkm6VlL36KarJS2TtBS4GvhMuv9YoDPd/wDwvYhwWJiZpQ44AC6+GObNgw0bsv8+RZ5LL/Whjo6O6OzszLsMM7OaWbgQJk+G+fPhkkt69xmSlqTXh3fLd3CbmdWpc85JLnbXoitqQPZfYWZmWRgwAK6+Gv7ylxp8V/ZfYWZmWfn2t2vzPe6GMjOzihwWZmZWkcPCzMwqcliYmVlFDgszM6vIYWFmZhU5LMzMrCKHhZmZVdQwc0NJWgu8tBcf0Qy80Ufl5KlRzgN8LkXVKOfSKOcBe3cuR0RExTUeGiYs9pakzmom0yq6RjkP8LkUVaOcS6OcB9TmXNwNZWZmFTkszMysIofFNjfkXUAfaZTzAJ9LUTXKuTTKeUANzsXXLMzMrCK3LMzMrCKHRUrSdZKekfS0pF9JGpV3Tb0l6R8l/S49n9slDcm7pt6S9Ol0nfatkupu5IqkyZKel7RS0jfzrmdvSPqJpNclPZd3LXtDUpukByStSP/d+kreNfWWpMGSfitpaXouf5/Zd7kbKiHp4Ij4c/r31cC4iPjrnMvqFUnnAvdHxGZJ/wcgIr6Rc1m9IulYYCvwI+B/RETdLLQuqQn4PTAJ6AIWAzMiYnmuhfWSpDOA94CfRsTxedfTW5JGAiMj4klJBwFLgIvq8Z+LJAEHRMR7kvYFHgG+EhGP9/V3uWWR6g6K1AFA3aZoRPwqIjanm48DrXnWszciYkVEPJ93Hb10KrAyIlZFxEZgLjAt55p6LSIeBt7Mu469FRGvRsST6d/vAiuA0flW1TuReC/d3Dd9ZPLb5bAoI+m7klYDs4D/nXc9feSzwC/yLqKfGg2sLtvuok5/lBqVpHbgJOCJfCvpPUlNkp4GXgfujYhMzqVfhYWk+yQ918NjGkBEfCci2oDZwFX5Vrt7lc4lPeY7wGaS8ymsas6lTqmHfXXbYm00kg4E5gNf3aFnoa5ExJaIGE/Sg3CqpEy6CAdk8aFFFRETqzz0JuBu4JoMy9krlc5F0pXABcA5UfALU3vwz6XedAFtZdutwJqcarEyaf/+fGB2RNyWdz19ISLelvQgMBno80EI/aplsTuSxpZtTgV+l1cte0vSZOAbwNSIeD/vevqxxcBYSWMkDQSmAwtyrqnfSy8K/zuwIiL+Ke969oaklu7RjpL2AyaS0W+XR0OlJM0HjiEZefMS8NcR8Uq+VfWOpJXAIGBduuvxOh7ZdTHwf4EW4G3g6Yg4L9+qqifpfOAHQBPwk4j4bs4l9ZqkOcCZJDOc/gm4JiL+PdeiekHSJ4BfA8+S/PcO8O2IuCe/qnpH0gnAf5L8+7UPMC8irs3kuxwWZmZWibuhzMysIoeFmZlV5LAwM7OKHBZmZlaRw8LMzCpyWJjtAUnvVT5qt++/VdKR6d8HSvqRpBfTGUMflvQxSQPTv/vVTbNWbA4LsxqRdBzQFBGr0l0/JpmYb2xEHAd8BmhOJx1cBFyRS6FmPXBYmPWCEv+YzmH1rKQr0v37SPp/aUvh55LukXRZ+rZZwJ3pcUcBHwP+Z0RsBUhnp707PfaO9HizQnAz16x3LgHGAyeS3NG8WNLDwASgHfgIMJxk+uufpO+ZAMxJ/z6O5G70Lbv4/OeAUzKp3KwX3LIw651PAHPSGT//BDxE8uP+CeCWiNgaEa8BD5S9ZySwtpoPT0NkY7o4j1nuHBZmvdPT9OO72w+wHhic/r0MOFHS7v4bHARs6EVtZn3OYWHWOw8DV6QLz7QAZwC/JVnW8tL02sVhJBPvdVsBfAggIl4EOoG/T2dBRdLY7jU8JA0D1kbEplqdkNnuOCzMeud24BlgKXA/8Ldpt9N8knUsniNZN/wJ4J30PXezfXh8DhgBrJT0LPBvbFvv4iyg7mZBtcblWWfN+pikAyPivbR18FtgQkS8lq438EC6vasL292fcRvwrTpef9wajEdDmfW9n6cL0gwErktbHETEeknXkKzD/fKu3pwulHSHg8KKxC0LMzOryNcszMysIoeFmZlV5LAwM7OKHBZmZlaRw8LMzCpyWJiZWUX/Hx3hNOu4DtyBAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train, y_train, X_test, y_test)\n",
    "    accuracy_s.append(tmp)\n",
    "    \n",
    "print(\"线性SVM 最优accuracy：\",format(max(accuracy_s)))\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "pyplot.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Pima.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线性SVM最优参数为C=100，最优accuracy为0.7748344370860927。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### RBF核SVM正则参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "RBF核是SVM最常用的核函数。 RBF核SVM 的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和核函数的宽度gamma C越小，决策边界越平滑； gamma越小，决策边界越平滑。\n",
    "采用交叉验证。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_test, y_test):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_test, y_test)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.7748344370860927\n",
      "accuracy: 0.7549668874172185\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7615894039735099\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.7748344370860927\n",
      "accuracy: 0.7814569536423841\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "RBF核SVM 最优accuracy： 0.7814569536423841\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-2, 2, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, 2, 5)   \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)\n",
    "print(\"RBF核SVM 最优accuracy：\",format(max(accuracy_s)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 = np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Pima.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由以上输出数值和图可以看出：   \n",
    "log(gamma)应小于1，故将log(gamma)调小；\n",
    "log(C)增长方向accuracy还在增长，故将log(C)调大；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6556291390728477\n",
      "accuracy: 0.6622516556291391\n",
      "accuracy: 0.7748344370860927\n",
      "accuracy: 0.7549668874172185\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.6754966887417219\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7615894039735099\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7748344370860927\n",
      "accuracy: 0.7814569536423841\n",
      "accuracy: 0.7417218543046358\n",
      "accuracy: 0.7615894039735099\n",
      "accuracy: 0.7682119205298014\n",
      "accuracy: 0.7549668874172185\n",
      "accuracy: 0.7284768211920529\n",
      "accuracy: 0.7417218543046358\n",
      "RBF核SVM 最优accuracy： 0.7814569536423841\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-1, 3, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-4, 0, 5) \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)\n",
    "print(\"RBF核SVM 最优accuracy：\",format(max(accuracy_s)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 = np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Pima.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由以上输出数值和图可以看出，当log(gamma)为-1，log(C)为2时，即gamma=0.1 C=100，模型accuracy最高，为0.7814569536423841"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "综上所述，   \n",
    "Logistic 回归默认参数模型accuracy：        0.7719900687547746      \n",
    "正则化的 Logistic Regression模型accuracy： 0.7753743760399334       \n",
    "      \n",
    "SVM默认参数模型accuracy：                  0.7682119205298014       \n",
    "线性SVM模型accuracy：                      0.7748344370860927     \n",
    "RBF核SVM模型accuracy：                     0.7814569536423841     \n",
    "因此，性能最好的模型为RBF核SVM模型。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
